/**
 * 1.vue子组件修改props出现的问题？
 * 答：父级组件与子组件的通信一般都是通过props来实现的，因为数据流向的单一才能保证数据变化的可追踪性，在vue中props遵循的是单向数据流，原则上子组件修改props是不被允许的。
 * 但是当props传递的参数为对象或者数组的时候，是通过引用传入的，所以对于一个引用类型的prop来说，在子组件中改变这个参数本身将会影响到父组件的数据状态。更关键的是，我们打开控制台，会发现完全没有报错。
 * 这就会导致父组件的data混乱，而且难以捕捉。
 * 在子组件中声明新变量，然后把prop深拷贝赋值给新变量，之后子组件就使用新变量。但是这种情况下父组件改变参数时，子组件无法更新参数，需要时可以通过watch或者computed来实现实时更新
 * 
 * 2.对象的深拷贝
 * 答：function deepClone(obj) {
        var cloneObj = {}; //在堆内存中新建一个对象
        for(var key in obj){ //遍历参数的键
            if(typeof obj[key] ==='object'){ 
                cloneObj[key] = deepClone(obj[key]) //值是对象就再次调用函数
            }else{
                cloneObj[key] = obj[key] //基本类型直接复制值
            }
        }
        return cloneObj 
    }

 * 3.按钮动画效果
 * 4.typescript + vue
 * 5.bfc
 * 答：什么情况下会触发bfc
      1．设置了float属性，并且不为none
      2．position属性为absolute或fixed
      3．display为inline-block、table-cell、table-caption、flex、inline-flex
      4．overflow属性不为visible

      bfc元素所具有的特性
      1．在bfc中，盒子从顶端开始垂直地一个接一个的排列；
      2．盒子垂直方向的距离由margin决定，属于同一个bfc的盒子的margin会重叠；
      3．在bfc中，每一个盒子的左边缘会触碰到父容器的左边缘内部，也就是说在没有margin和padding时，父border的内边和子border的外边重叠；
      4．bfc的区域不会与浮动盒子产生交集，而是紧贴浮动边缘；
      5．如果父盒子没有设置高度，但子盒子中有浮动元素，那么在计算bfc的高度时， 会计算上浮动盒子的高度。

 * 6.async和await
 * 7.继承
 * 8.http缓存
 * 9.性能优化
 * 10.vue + seo
 * 11.setimeout 延时执行
 * 答：setTImeout(0) 的极限在16ms左右，CPU调度时间。
 * 
 * 12.扩展运算符
 * 答：复制对象(深拷贝)<一维对象>、合并对象-深拷贝
 * 
 * 13.闭包
 * 14.原型链
 */